Prima posta
Otázka od: Vlastimil Zdenek
2. 6. 2004 11:23
Zdravim vsechny,
muzete mi nekdo prosim poradit, jak odeslat email s prilohou bez jakekoli
komunikace s uzivatelem? Uzivatel pouze stiskne tlacitko a mail se odesle
pripadne se ulozi do "Posta k odeslani".......
Doposud pouzivame toto od Petra Vonese, ale i po vynechani "Mapi_Dialog" se
stejne dialog(i kdyz jednodussi) zobrazi a musi se potvrdit........
Diky za pomoc
D5 Ent, MSSQL 2000, NT4
Vlasta
function SendMail(Prijemce,Kopie,Soubor,TypSouboru,Predmet,TextMailu:String) :
Boolean;
var
Zprava : MapiMessage;
Adresat : array [0..1] of MapiRecipDesc;
MapiSoubor : MapiFileDesc;
Vysledek : Cardinal;
Reg : TRegistry;
begin
{ nastavime simple MAPI }
Reg := TRegistry.Create;
try
with Reg do begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('\Software\Microsoft\Windows Messaging Subsystem', False)
then WriteString('MAPI', '1');
end;
finally
Reg.CloseKey;
Reg.Free;
end;
{ struktura prijemce }
with Adresat[0] Do Begin
ulReserved := 0;
ulRecipClass := Mapi_To;
lpszName := PChar(Prijemce);
lpszAddress := nil;
ulEIDSize := 0;
lpEntryID := nil;
end;
with Adresat[1] Do Begin
ulReserved := 0;
ulRecipClass := Mapi_CC;
lpszName := PChar(Kopie);
lpszAddress := nil;
ulEIDSize := 0;
lpEntryID := nil;
end;
{ struktura prilohy }
with MapiSoubor do begin
ulReserved := 0;
flFlags := 0;
nPosition := 0;
lpszPathName := PChar(Soubor);
lpszFileName := nil;
lpFileType := PChar(TypSouboru);
end;
{ struktura vlastni zpravy }
with Zprava do begin
ulReserved := 0;
lpszSubject := PChar(Predmet);
lpszNoteText := PChar(TextMailu);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
{ if edMailKopie.Text <> ''
then nRecipCount := 2
else }nRecipCount := 1;
lpRecips := @Adresat;
nFileCount := 1;
lpFiles := @MapiSoubor;
end;
{ pokusime se to odeslat, pokud nema byt dialog, je treba vypustit Mapi_Dialog
}
Result := False;
Vysledek := MapiSendMail(0, Application.Handle, Zprava,
Mapi_Dialog or Mapi_LogOn_UI or Mapi_New_Session, 0);
case Vysledek of
Success_Success : Result := True;
Mapi_E_User_Abort : Result := False;
else
Application.MessageBox(' Nepodaoilo se poslat zpravu elektronickou postou.'+#13#13+
' Zkontrolujte, zda je vyplnina e-mailova adresa,'+#13+
'popoipadi pokud pouzivate Outlook expres zkontrolujte,'+#13+
' zda je nastaven jako vychozi klient MAPI.' , 'Chyba', mb_OK +
mb_IconError);
end;
end;